class Solution {//leetcode1262——可被三整除的最大和
public:
    int maxSumDivThree(vector<int>& nums) {
        int n=nums.size();
        int sum=0;
        int x1=0x3f3f3f3f,x2=0x3f3f3f3f,y1=0x3f3f3f3f,y2=0x3f3f3f3f;
        for(int i=0;i<n;i++){
            if(nums[i]%3==1){
                if(x1>nums[i]){
                    x2=x1;
                    x1=nums[i];
                }
                else if(x2>nums[i]) x2=nums[i];
            } 
            else if(nums[i]%3==2) {
                if(y1>nums[i]){
                    y2=y1;
                    y1=nums[i];
                }
                else if(y2>nums[i]) y2=nums[i];
            }
            sum+=nums[i];
        }
        if(sum%3==1){//找到x中的最小值，以及y中的最小值和次小值
            sum=max(sum-x1,sum-y1-y2);
        }
        if(sum%3==2){//找到x中的最小值和次小值，以及y中的最小值
            sum=max(sum-y1,sum-x1-x2);
        }
        return sum;
    }
};